#Boa:Frame:Frame1

import wx
import consultasBD
import utiles

def create(parent):
    return Frame1(parent)

[wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1BUTTON3, wxID_FRAME1PANEL1, 
 wxID_FRAME1STATICTEXT1, wxID_FRAME1STATICTEXT2, wxID_FRAME1STATICTEXT3, 
 wxID_FRAME1STATICTEXT4, wxID_FRAME1TEXTCTRL1, 
] = [wx.NewId() for _init_ctrls in range(9)]

class Frame1(wx.Frame):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
              pos=wx.Point(437, 187), size=wx.Size(220, 214),
              style=wx.DEFAULT_FRAME_STYLE, title='Exportar Compras')
        self.SetClientSize(wx.Size(212, 187))

        self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self,
              pos=wx.Point(0, 0), size=wx.Size(212, 187),
              style=wx.TAB_TRAVERSAL)

        self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label='Exportar',
              name='button1', parent=self.panel1, pos=wx.Point(24, 144),
              size=wx.Size(75, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnExportar, id=wxID_FRAME1BUTTON1)

        self.button3 = wx.Button(id=wxID_FRAME1BUTTON3, label='Salir',
              name='button3', parent=self.panel1, pos=wx.Point(120, 144),
              size=wx.Size(75, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnSalir, id=wxID_FRAME1BUTTON3)

        self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
              label='Total registros a exportar', name='staticText1',
              parent=self.panel1, pos=wx.Point(24, 16), size=wx.Size(123, 13),
              style=0)

        self.textCtrl1 = wx.TextCtrl(id=wxID_FRAME1TEXTCTRL1, name='textCtrl1',
              parent=self.panel1, pos=wx.Point(160, 16), size=wx.Size(32, 21),
              style=0, value='')
        self.textCtrl1.SetEditable(False)

        self.staticText2 = wx.StaticText(id=wxID_FRAME1STATICTEXT2,
              label='Nota:', name='staticText2', parent=self.panel1,
              pos=wx.Point(24, 48), size=wx.Size(29, 13), style=0)
        self.staticText2.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD, False,
              'Tahoma'))

        self.staticText3 = wx.StaticText(id=wxID_FRAME1STATICTEXT3,
              label='Se exportan Stock comprados', name='staticText3',
              parent=self.panel1, pos=wx.Point(24, 64), size=wx.Size(143, 13),
              style=0)

        self.staticText4 = wx.StaticText(id=wxID_FRAME1STATICTEXT4,
              label='ptc,cantidad', name='staticText4', parent=self.panel1,
              pos=wx.Point(24, 80), size=wx.Size(60, 13), style=0)

    def __init__(self, parent):
        self._init_ctrls(parent)
        print "Procesando"
        self.lectura,self.lista = self.registros()
        if not self.lectura:
            utiles.mensaje(None,"No hay datos a exportar")
            self.Close()
        total = len(self.lista)
        self.textCtrl1.SetLabel(str(total))

    def registros(self):
        sql = "SELECT id,ptc,stock FROM matrisweb WHERE subido='0'"
        resultados = consultasBD.ordenCruda(sql)
        if len(resultados)==0 or resultados == None or resultados == ():
            return False,[]
        lista = []
        for item in resultados:
            lista.append((str(item[0]),str(item[1]),str(item[2])))
        return True,lista

    def OnSalir(self, event):
        self.Close()
    
    def OnExportar(self, event):
        totalExportar = self.textCtrl1.GetLabel()
        if totalExportar == "0" or totalExportar == "None" or totalExportar == "":
            utiles.mensaje(None,"No hay datos a exportar")
            return
        fecha = utiles.obtenerFecha("Y-m-d h:m:s")
        fecha = fecha.replace("-","")
        fecha = fecha.replace(":","")
        fecha,hora = fecha.split(" ")
        archivo = "c:\\matrisamor.doc\matrisamorweb-"+fecha+"-"+hora+".csv"
        f=open(archivo,"w")
        f.write("sku,stock\n")
        total=0
        consultasSQL=[]
        for item in self.lista:
            f.write(item[1]+","+item[2]+"\n")
            consultasSQL.append("UPDATE matrisweb SET subido='1' WHERE id='"+str(item[0])+"' ")
            total+= 1
        f.close()

        try:
            consultasBD.begin() # COMIENZO EL ALMACENAMIENTO... HASTA EL COMMIT
            print "Actualizando datos exportados"
            for sql in consultasSQL:
                print sql
                consultasBD.executaSinCommit(None, sql)
            consultasBD.commit() # FIN DE COMMIT, SE GRABA TODO AHORA, Y SINO, NADA
        except:
            consultasBD.rollback()
            utiles.mensaje(None,"Error en la grabacion\nReintente exportar los datos")
            return
        
        texto = "Total registros exportados "+str(total)+" en\n"
        texto+= archivo
        utiles.mensaje(None,texto)

        self.lectura,self.lista = self.registros()
        total = len(self.lista)
        self.textCtrl1.SetLabel(str(total))
